#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
举个例子：

现在很多网站都搞REST API，比如新浪微博、豆瓣啥的，调用API的URL类似：

    http://api.server/user/friends
    http://api.server/user/timeline/list

如果要写SDK，给每个URL对应的API都写一个方法，那得累死，而且，API一旦改动，SDK也要改。

利用完全动态的__getattr__，我们可以写出一个链式调用：
"""


class Chan(object):

    def __init__(self, path=''):
        self.path = path

    def __getattr__(self, attr):
        return Chan('%s/%s' % (self.path, attr))

    def users(self, username):
        return Chan('%s/%s' % (self.path, username))

    def __str__(self):
        return self.path

    __repr__ = __str__


def main():
    chan = Chan()
    print(chan.wangnan.clas.getattr.test)
    print(chan.users('wangnan').clas.getattr.test)
    print(chan.user.users('wangnan').repos)


if __name__ == "__main__":
    main()
